1. Field of the Invention
Aspects of the invention relate generally to data communication systems and more particularly to adaptive error correction in data communication systems.
2. Description of the Prior Art
Data communication systems are commonly utilized for transferring any kind of data, including, but not limited to, audio, video, text, numerical, and myriad other types of data. Typically, as shown in FIG. 1, a data communication system 1 includes a data transmitter 2 which transfers data over a communication link 6 to a data receiver 3. The communication link 6 may be a wireline link, a wireless link, a fiber optic link, or any other form of connection employable for communication. The link 6 may also include one or more intermediate devices, such as switches, routers, relays, and the like employed in a computer or communication network, for transferring communication data from the transmitter 2 to the receiver 3.
Regardless of the type of communication link 6 utilized, the possibility exists that the data may be corrupted over the communication link 6 between the time the transmitter 2 transfers the data, and the time the receiver 3 accepts the data. Such corruption most often occurs as a result of traffic congestion, thus causing queue overflow resulting in lost data. In other cases, data corruption may result from electrical noise, adverse atmospheric conditions, defects suffered by devices employed in the communication link 6, and many other sources.
To prevent the communication data from being corrupted in the presence of adverse conditions, the transmitter 2 and receiver 3 often employ one or more forms of forward error correction, in which the transmitter adds error correction information to the data being transferred. This error correction data often is generated by a forward error correction encoder 4, which utilizes a mathematical algorithm employing the communication data as input. The communication data and the error correction data are then transferred to the receiver 3, which uses an error correction decoder 5 employing an algorithm related to that utilized by the error correction encoder 4 to determine if the communication data exhibits errors. If errors are present, the receiver 3 further employs the algorithm and the error correction data to correct the errors in the communication data. The number of errors correctable by use of the error correction data is typically limited in some fashion, and often depends in part on the amount of error correction data compared to the amount of communication data being protected. Generally, the higher the amount of error correction data, the higher the number of errors in the communication data that may be corrected.
One particular single-stream forward error correction scheme currently employed results in a data frame 10 shown graphically in the block diagram of FIG. 2. The data frame 10, which is one possible organization of data for transmission over the communication link 6 of FIG. 1, includes a group of data packets 12 arranged in a number of rows 14 and a number of columns 16. In this particular scheme, the data packets 12, which carry the communication data transferred from a transmitter 2 to a receiver 3, are transferred in order starting in the first row 14, from left to right, then proceeding to the next row in the same fashion, and continuing row by row. After all rows of data packets 12 have been transferred, a row 18 of error correction data packets 13 is transferred thereafter. In other examples, the error correction data packets 13 are interleaved among the data packets 12 during transfer. In this example, the information in each error correction packet 13 provides the ability to correct errors in the data packets within its corresponding column 16. In one implementation, the error corrections packets 13 are generated from a bitwise exclusive-OR (XOR) operation across each of the data packets 12 within a particular column 16. In other implementations, a more sophisticated algorithm, such as a Reed-Solomon (RS) error correction code (ECC), may be employed. Other possible algorithms exist as well.
In another example, provided in FIG. 3, a data frame 20 employing a dual-stream forward error correction scheme provides rows 24 and columns 26 of communication data packets 22. Also, a row 28 of error correction packets 23 is provided, whereby each error correction packet 23 supplies some level of correction for the data packets 22 of its associated column 26. In addition, a column 29 of error correction packets 23 provides data for correcting the data packets 22 of each row 24 of the frame 20. Thus, associated with each data packet 26 are two error correction packets 23 employable for the correction of that packet 26.
Unfortunately, the addition of error correction packets or other forms of error correction data to the communication data negatively affects the overall effective throughput and latency of the communication link 6 shown in FIG. 1. In other words, the throughput of the link 6 is decreased as more error correction data is added, since more bandwidth of the link 6 must be expended for transfer of the error communication data to the receiver 3. Also, since the receiver 3 must wait for all error correction data associated with a particular set of communication data to be received before completely determining if the communication data contains errors, some delay is introduced into the overall data transmission time. More specifically, the time elapsed during transmission of all communication and error correction data from the transmitter 2 to the receiver expands as the amount of error correction data increases.
Adverse conditions affecting the “raw,” or uncorrected, error rate of a particular communication link 6 often change over time. Thus, the raw error rate of the communication data may fluctuate in a corresponding manner. However, the algorithms and the amount of error correction data employed by a particular data communication system 1 typically remain unchanged, thus not being modified to adjust to changing conditions over the communication link 6 that may alter the number of errors being imposed on the communication data between the transmitter 2 and the receiver 3. As a result, a particular error correction scheme capable of correcting errors under more adverse circumstances may employ an unnecessary amount of error correction data during periods when the raw error rate of the communication link 6 is low. Conversely, an error correction scheme suitable for a normally low data error rate may not exhibit an acceptable error correction capacity for periods of increased raw error rates, thus possibly rendering at least some of the communication data from the transmitter 2 uncorrectable at the receiver 3.